A typical computer, whether an off-the-shelf or a customized computer for personal, business, specialty, or other use, has many components. Some of the common components are processors, memories, storage devices, input and output devices, and network interfaces. The operating system, such as Microsoft Windows®, Mac OS®, UNIX, Linux, etc., is responsible for controlling the components and their functions. In particular, the operating system handles file requests from applications or from the operating system itself. When a file request is received, the operating system attempts to supply the file from one of the local storage devices or from a network server if the computer is connected to a network.
Because there are many different options available for storage devices and network interfaces, the operating system is typically programmed with the characteristics necessary to access almost every storage device and network interface that could be connected to the computer. Thus, for each storage device, the operating system has to be programmed with the storage device type (i.e. magnetic, optical, etc.), the interface type (i.e. IDE, SCSI, etc.), and the physical parameters of the storage device (i.e. number of cylinders, sectors, heads, tracks, etc.). If the computer is connected to a network, the operating system also has to be programmed with the various network interface types (i.e. Ethernet, Token Ring, ATM, etc.), the network protocols (i.e. TCP/IP, IPX, AppleTalk, SNA, etc.), and any particular methods used to communicate with network resources (i.e. servers).
In addition, the operating system also has to be able to manage files on storage devices and over a network. On local storage devices, the operating system typically uses lookup tables or indices, usually referred as file allocation tables, to manage the files. Over the network, the operating system has to be programmed to communicate with a network server and retrieve files. It is often advantageous for the operating system to translate the file information received from the network into a format resembling the file allocation tables to simplify the file retrieval process.
The way an operating system manages components and their functions add complexity to a computer. The complexity is easily seen during the setup process of a computer. Typically, a computer goes through a setup process that would involve (a) booting from a bootable device that can initiate the installation of an operating system, (b) partitioning and formatting local storage devices, (c) installing the full operating system, (d) configuring hardware components such as display cards and network interface, (e) installing and configuring applications, etc., until the computer is prepared for everyday general use.
The complexity is also evident while the computer is in use. Applications and the operating system may require periodic patches or updates, the installation of which frequently involves uninstalling the older versions of the applications or the components of the operating system. Additionally, files may be corrupted due to program errors, user errors, or computer viruses. When this happens, the corrupted files need to be replaced or repaired, a process that may involve reinstalling the applications that use the corrupted files or even possibly reinstalling the operating system itself in some instances.
The complexity involved in using a computer usually results in high maintenance and support costs being incurred. In a business environment, the support costs can easily reach thousands of dollars per user or per computing device. Additionally, the cost of maintaining computers increases because work productivity tends to decrease significantly, often to zero, when computer related problems arise.
Problems related to hardware malfunction, except problems related to storage devices, may often be resolved within a short amount of time. For instance, a broken component, such as a video card or a network interface card, may be quickly replaced with an identical component. However, computer repair may become a lengthy process if the problems are related to storage devices or the files stored on the storage devices. When a hard drive in a computer malfunctions or corrupted files cause problems, the repair and recovery process might involve reinitializing the hard drive, reinstalling the operating system, and/or reinstalling applications.
Numerous methods are presently available to reduce the complexity of computers, shorten the recovery process when problems occur, or to minimize the need for a recovery process altogether. Some of the common methods are cloning the storage device, booting the computer from a network, utilizing specialized computer management software, and applying file level security.
By cloning the storage device, the installation process may be shortened. A computer is first completely set up with a full set of applications. Then the storage device is cloned or duplicated as an “image” file. The image file may then be used to reset the computer to its original condition or to set up identically equipped computers. Many consumer-oriented computers come with recovery CD ROM's containing the factory default image that can be used to restore the storage device to its factory default condition. The drawback of this method is that a new image of the storage device has to be created whenever there is a change in the operating system, applications, or any other files stored on the storage device. Complications may arise using this method in instances when it is necessary to apply patches or updates to the installed software after the storage device is restored from an old image.
The network boot method is often used in conjunction with simple computers that download necessary files from a network server. The computer usually uses a well-know network service, such as BOOTP, TFTP, or PXE, to download and execute a small basic portion of an operating system, which in turn can start downloading the rest of the operating system and any applications. The drawback of this method is that if the computer does not have a local storage device, it has to go through the same boot process of downloading needed files whenever it is powered on or reset. If the computer has a local storage device, this process can benefit by storing downloaded files locally. But then the operating system downloaded over the network is, once again, responsible for the often complex task of managing hardware components and files stored on the local storage device.
The computer management software method is used to enhance the operating system by adding additional software components as agents, daemons, or services. One typical way of using this method is to use anti-virus software that constantly scans stored files for any computer virus infection. This method may also be implemented by adding a software component that constantly monitors important files on the local storage device and attempts to self-heal any damaged or corrupted files. An additional implementation adds a software component that handles file updates pushed out from a server as a part of a computer management tool. The drawback of this method is that the software components acting as agents, daemons, or services are highly dependent on the operating system. The operating system has to provide necessary functions, such as managing local storage devices or network interfaces, for these software components to work properly.
Many operating systems can also apply file level or directory level security to provide certain level of protection against computer viruses, unauthorized access, user errors, or application errors that can corrupt important files. The drawback of this method is that it is operating system dependant, and a super user, an administrator, or a process running with full access privileges can accidentally modify, delete, or corrupt important files in the local storage.
The above methods, by themselves or in combination with other methods, provide some help in reducing the complexities involved with computers. However, none of the methods fundamentally changes how the operating system manages the components of a computer. Thus, a new approach is needed for managing computers and simplifying the manner in which files are distributed over a network.